Query(FCGeneric)

 

Object and Type

 

Object  : FCGeneric

Type     : Method

 

 

Prototype

 

Public Sub Query()

 

 

Description

 

This method causes the generic object to query the database (based on the DBObjectName, the Filter, the SortFields, and the DataFields you have set for this object) to retrieve records. The query retrieves 0 or more rows, and places them in the recordset for the generic object.

 

If you are using child objects (traversing from one generic object to another), you only have to query the parent object. FCFL will then query all of the child objects for you automatically. For example, if you wish to query the case object for one specific case, but also wish to get all related activity logs and the related contact, you would set up the case, activity_log, and contact generic objects (see example below), and would only have to query the case generic object.

 

If you have more than one object that you wish to query at the same time that are NOT related, put them in the same bulk, and use the FCBulk.Query method.

 

Note: If you perform a query on the generic object, the recordset for the records is then "Open." You may NOT perform another query on the same generic objects unless you close the recordset first. To do that, call on the following code (assume the name of the generic object is boCase):

 

boCase.Records.Close();

 

Note: For ADO-savvy users, the recordset for the generic object is disconnected from the database as a final part of the query.

 

 

Error Codes

 

Value                                     Meaning                                                                                                                               

12005                                      The SQL query () is not valid

12006                                      The object to query does not have a DBObjectName specified

12007                                      You attempted to query a child object using a relation that was not queried for in

the parent generic object

12016                                      One of the data restriction clauses for this object is not valid

12018                                      The generic object to be queried is open, and may not be queried. Please close

the object before you attempt the query

12021                                      Your query returned () rows. Maximum allowed for this query is ().

12032                                      You must specify data fields for distinct queries. This query is for a distinct

query, but has not defined data fields.

 

 

Example

 

The following example queries a specific case, all related activity logs, and the related contact.

 

JavaScript:

The code in this example is written in JavaScript for inclusion in ASP pages.

 

  // Get all cases, activity logs, and contact.

  var boCase = FCSession.CreateGeneric();

  boCase.SimpleQuery("case");

 

  var boAct = FCSession.CreateGeneric();

  boAct.TraverseFromParent(boCase, "case_act2act_entry");

 

  var boContact = FCSession.CreateGeneric();

  boContact.TraverseFromParent(boCase, "case_reporter2contact");

 

  // Now query the data

  boCase.Query();

 

  // Display return data. First the case, then all activity logs

  //  then the one contact for the case

  while (boCase.EOF != true)

  {

    Response.Write ("Case ID: " + boCase("id_number"));

   

    while (boAct.EOF != true)

    {

      Response.Write("  Activity: " + boAct("objid"));

      boAct.MoveNext();

    }

 

    while (boContact.EOF != true)

    {

      Response.Write("  Contact: " + boContact("first_name") + " " +

                                   boContact("last_name"));

      boContact.MoveNext();  

    }

    boCase.MoveNext();

  }

 

Visual Basic:

The code in this example is written in Visual Basic.

 

  Dim boCase As FCGeneric

  Dim boAct  As FCGeneric

  Dim boCont As FCGeneric

   

  Set boCase = fc_session.CreateGeneric

  boCase.SimpleQuery "case"

 

  Set boAct = fc_session.CreateGeneric

  boAct.TraverseFromParent boCase, "case_act2act_entry"

 

  Set boCont = fc_session.CreateGeneric

  boCont.TraverseFromParent boCase, "case_reporter2contact"

 

  boCase.Query

 

  While boCase.EOF = False

    MsgBox "Case: " & boCase("id_number")

   

    While boAct.EOF = False

      MsgBox "Activity: " & Trim$(Str$(boAct("objid")))

      boAct.MoveNext

    Wend

   

    While boCont.EOF = False

      MsgBox "Contact: " & boCont("first_name") & " " & _

                           boCont("last_name")

      boCont.MoveNext

    Wend

   

    boCase.MoveNext

  Wend